package top.colordreams.tenant;

import java.util.Objects;

/**
 * 动态租户上下文
 *
 * @author 秋辞未寒
 */
public interface TenantContext {

    /**
     * 返回默认租户ID
     *
     * @return 默认租户ID
     */
    String getDefaultTenantId();

    /**
     * 获取当前租户ID
     *
     * @return 当前租户ID
     */
    String getCurrentTenantId();

    /**
     * 默认租户是否为根租户
     *
     * @return 如果是根租户则返回 true
     */
    default boolean defaultTenantIsRoot() {
        return Objects.equals(getDefaultTenantId(), getRootTenantId());
    }

    /**
     * 返回默认租户ID
     *
     * @return 默认租户ID
     */
    String getRootTenantId();

    /**
     * 判断租户是否为根租户
     *
     * @param tenantId 租户ID
     * @return 如果是根租户则返回 true
     */
    default boolean isRootTenant(String tenantId) {
        return Objects.equals(tenantId, getRootTenantId());
    }

    /**
     * 判断当前租户是否为根租户
     *
     * @return 如果是根租户则返回 true
     */
    default boolean isRootTenant() {
        return isRootTenant(getCurrentTenantId());
    }

    /**
     * 判断租户是否为默认租户
     *
     * @param tenantId 租户ID
     * @return 如果是默认租户则返回 true
     */
    default boolean isDefaultTenant(String tenantId) {
        return Objects.equals(tenantId, getDefaultTenantId());
    }

    /**
     * 判断当前租户是否为默认租户
     *
     * @return 如果是默认租户则返回 true
     */
    default boolean isDefaultTenant() {
        return isDefaultTenant(getCurrentTenantId());
    }
}
